#define _CRT_SECURE_NO_WARNINGS 1
#include <stack>
using namespace std;
class Solution {
public:
    void push(int value)
    {
        S.push(value);
        if (Min.empty() || Min.top() >= value)
        {
            Min.push(value);
        }
    }
    void pop()
    {
        if (S.empty()) return;
        int Top = S.top();
        S.pop();
        if (Min.top() == Top)
        {
            Min.pop();
        }

    }
    int top()
    {
        return S.top();
    }
    int min()
    {
        return Min.top();
    }
private:
    stack<int> S;
    stack<int> Min;
};